package pe.gob.mimp.dao.impl;

import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;

import pe.gob.mimp.dao.EntidadDao;
import pe.gob.mimp.model.Entidad;
import pe.gob.mimp.model.TablaParametrica;

@Repository
public class EntidadDaoImpl extends AbstractDaoImpl<Entidad, Long> implements
		EntidadDao {

	protected EntidadDaoImpl() {
		super(Entidad.class);
		// TODO Auto-generated constructor stub
	}

	public Entidad getEntidadPorId(Long idEntidad) {
		return findById(idEntidad);
	}

	public void saveEntidad(Entidad entidad) {
		saveOrUpdate(entidad);
	}

	@SuppressWarnings("unchecked")
	public List<Entidad> listadoEntidades() {
		List<Entidad> lista = null;
		Criteria criteria = getCurrentSession().createCriteria(Entidad.class);
		criteria.addOrder(Order.asc("descripcion"));
		lista = criteria.list();
		return lista;
	}
	
	@SuppressWarnings("unchecked")
	public List<Entidad> getEntidadesPorTipo(Long idTipoEntidad){
		Criteria criteria = getCurrentSession().createCriteria(Entidad.class);
		criteria.createCriteria("idTipoEntidad")
        .add( Restrictions.eq("idTabla", idTipoEntidad) );
		return criteria.list();
	}

}
